home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / database / postgres / appgen-0.2-a / appgen-0 / AppGEN / apps / cis.app next >
Encoding:
Text File  |  1996-07-11  |  31.8 KB  |  1,094 lines

  1. INCLUDE "global.app"
  2.  
  3. INCLUDE "cis.menu"
  4. INCLUDE "cis.rep"
  5.  
  6. [MODULE subjective]
  7.     SET default_process AS "clear"
  8.  
  9. [FORM subjective]
  10.     SET title AS "Subjective Costcodes"
  11.     DEFINE FORM {
  12.         recnum : 10 : "" : HIDDEN
  13.         costcode : 7 : "Costcode: " : TEXT
  14.         description : 45 : "Description: " : TEXT
  15.         sub_type : 10 : "Type: " : CHOICE "Building, Engineering" "Furniture, Equipment" "Professional Fees" "Other"
  16.         } IN COLUMN
  17.     DEFINE TOOLBAR {
  18.         "ADD" : ALL : PROCESS "add"
  19.         "FIND" : ALL : PROCESS "find"
  20.         "UPDATE" : DATA : PROCESS "update"
  21.         "DELETE" : DATA : PROCESS "delete"
  22.         "CLEAR" : ALL : PROCESS "clear"
  23.         "EXIT" : ALL : MENU "system"
  24.         }
  25.  
  26. [FORM sure]
  27.     SET title AS "Are you sure you want to delete ?"
  28.     DEFINE FORM {
  29.         recnum : 10 : "" : HIDDEN
  30.         costcode : 7 : "Costcode: " : TEXT
  31.         }
  32.     DEFINE TOOLBAR {
  33.         "YES" : ALL : PROCESS "yes"
  34.         "NO" : ALL : PROCESS "clear"
  35.         }
  36.  
  37. [PROCESS add]
  38.     DATA results
  39.     INT no_rows
  40.     INT new_recnum
  41.     SQL "SELECT * FROM subjective WHERE  costcode='$input.costcode';" TO results
  42.     ROWS results TO no_rows
  43.     IF no_rows > 0 THEN BEGIN
  44.         DISPLAY subjective WITH input ERROR "Duplicate Record" ON 1
  45.         END
  46.     SQL "SELECT max(recnum) FROM subjective;" TO results
  47.     CALC ( results.0.0 + 1 ) TO new_recnum
  48.     SQL "INSERT INTO subjective (recnum,costcode,description,sub_type) VALUES ($new_recnum , '$input.costcode', '$input.description', $input.sub_type);"
  49.     DISPLAY subjective
  50.  
  51. [PROCESS update]
  52.     DATA results
  53.     INT no_rows
  54.     SQL "UPDATE subjective SET costcode='$input.costcode',description='$input.description',sub_type=$input.sub_type WHERE recnum = $input.recnum ;"
  55.     DISPLAY subjective
  56.  
  57. [PROCESS delete]
  58.     DISPLAY sure WITH input
  59.  
  60. [PROCESS clear]
  61.     DISPLAY subjective
  62.  
  63. [PROCESS yes]
  64.     SQL "DELETE FROM subjective WHERE recnum = $input.recnum ;"
  65.     DISPLAY subjective
  66.  
  67. [PROCESS find]
  68.     DATA results
  69.     INT and
  70.     STRING query
  71.     MOVE 0 TO and
  72.     MOVE "SELECT recnum, costcode, description FROM subjective WHERE " TO query
  73.     IF NOT BLANK(input.costcode) THEN BEGIN
  74.         IF and = 1 THEN APPEND query " AND "
  75.         APPEND query "costcode like '%" input.costcode "%'"
  76.         MOVE 1 TO and
  77.         END
  78.     IF NOT BLANK(input.description) THEN BEGIN
  79.         IF and = 1 THEN APPEND query " AND "
  80.         APPEND query "description like '%" input.description "%'"
  81.         MOVE 1 TO and
  82.         END
  83.     APPEND query "ORDER BY costcode, description;"
  84.     SQL query TO results
  85.     OUTPUT find_list WITH results
  86.  
  87. [PROCESS find_display]
  88.     DATA results
  89.     SQL "SELECT recnum, costcode,description,sub_type FROM subjective WHERE recnum=$input.recnum ;" TO results
  90.     DISPLAY subjective WITH results
  91.  
  92. [PROCESS pick_display]
  93.     DISPLAY subjective WITH input
  94.  
  95. [OUTPUT find_list]
  96.     SET title AS "Search Results"
  97.     SET type AS screen
  98.     DEFINE OUTPUT {
  99.         recnum : RIGHT : "Record"
  100.         costcode : LEFT : "costcode"
  101.         description : LEFT : "description"
  102.         } LINK TO PROCESS find_display WITH VALUE recnum
  103.  
  104.  
  105. [MODULE supplier]
  106.     SET default_process AS "clear"
  107.  
  108. [FORM supplier]
  109.     SET title AS "Supplier Details"
  110.     DEFINE FORM {
  111.         recnum : 10 : "" : HIDDEN
  112.         ref : 4 : "Reference: " : TEXT
  113.         name : 45 : "Name: " : TEXT
  114.         addr1 : 45 : "Address: " : TEXT
  115.         addr2 : 30 : "" : TEXT
  116.         addr3 : 30 : "" : TEXT
  117.         addr4 : 30 : "" : TEXT
  118.         tel : 15 : "Telephone: " : TEXT
  119.         fax : 15 : "Fax: " : TEXT
  120.         supplier_type : 10 : "Type: " : CHOICE "Contractor" "Consultant" "Supplier"
  121.         } IN COLUMN
  122.     DEFINE TOOLBAR {
  123.         "ADD" : ALL : PROCESS "add"
  124.         "FIND" : ALL : PROCESS "find"
  125.         "UPDATE" : DATA : PROCESS "update"
  126.         "DELETE" : DATA : PROCESS "delete"
  127.         "CLEAR" : ALL : PROCESS "clear"
  128.         "EXIT" : ALL : MENU "invoices"
  129.         }
  130.  
  131. [FORM sure]
  132.     SET title AS "Are you sure you want to delete ?"
  133.     DEFINE FORM {
  134.         recnum : 10 : "" : HIDDEN
  135.         ref : 8 : "Reference: " : TEXT
  136.         }
  137.     DEFINE TOOLBAR {
  138.         "YES" : ALL : PROCESS "yes"
  139.         "NO" : ALL : PROCESS "clear"
  140.         }
  141.  
  142. [PROCESS add]
  143.     DATA results
  144.     INT no_rows
  145.     INT new_recnum
  146.     SQL "SELECT * FROM supplier WHERE  ref='$input.ref';" TO results
  147.     ROWS results TO no_rows
  148.     IF no_rows > 0 THEN BEGIN
  149.         DISPLAY supplier WITH input ERROR "Duplicate Record" ON 1
  150.         END
  151.     SQL "SELECT max(recnum) FROM supplier;" TO results
  152.     CALC ( results.0.0 + 1 ) TO new_recnum
  153.     SQL "INSERT INTO supplier (recnum,ref,name,addr1,addr2,addr3,addr4,tel,fax,supplier_type) VALUES ($new_recnum , '$input.ref', '$input.name', '$input.addr1', '$input.addr2', '$input.addr3', '$input.addr4', '$input.tel', '$input.fax', $input.supplier_type);"
  154.     DISPLAY supplier
  155.  
  156. [PROCESS update]
  157.     DATA results
  158.     INT no_rows
  159.     SQL "UPDATE supplier SET ref='$input.ref',name='$input.name',addr1='$input.addr1',addr2='$input.addr2',addr3='$input.addr3',addr4='$input.addr4',tel='$input.tel',fax='$input.fax',supplier_type=$input.supplier_type WHERE recnum = $input.recnum ;"
  160.     DISPLAY supplier
  161.  
  162. [PROCESS delete]
  163.     DISPLAY sure WITH input
  164.  
  165. [PROCESS clear]
  166.     DISPLAY supplier
  167.  
  168. [PROCESS yes]
  169.     SQL "DELETE FROM supplier WHERE recnum = $input.recnum ;"
  170.     DISPLAY supplier
  171.  
  172. [PROCESS find]
  173.     DATA results
  174.     INT and
  175.     STRING query
  176.     MOVE 0 TO and
  177.     MOVE "SELECT recnum, ref, name FROM supplier WHERE " TO query
  178.     IF NOT BLANK(input.ref) THEN BEGIN
  179.         IF and = 1 THEN APPEND query " AND "
  180.         APPEND query "ref like '%" input.ref "%'"
  181.         MOVE 1 TO and
  182.         END
  183.     IF NOT BLANK(input.name) THEN BEGIN
  184.         IF and = 1 THEN APPEND query " AND "
  185.         APPEND query "name like '%" input.name "%'"
  186.         MOVE 1 TO and
  187.         END
  188.     IF NOT BLANK(input.addr1) THEN BEGIN
  189.         IF and = 1 THEN APPEND query " AND "
  190.         APPEND query "addr1 like '%" input.addr1 "%'"
  191.         MOVE 1 TO and
  192.         END
  193.     IF NOT BLANK(input.addr2) THEN BEGIN
  194.         IF and = 1 THEN APPEND query " AND "
  195.         APPEND query "addr2 like '%" input.addr2 "%'"
  196.         MOVE 1 TO and
  197.         END
  198.     IF NOT BLANK(input.addr3) THEN BEGIN
  199.         IF and = 1 THEN APPEND query " AND "
  200.         APPEND query "addr3 like '%" input.addr3 "%'"
  201.         MOVE 1 TO and
  202.         END
  203.     IF NOT BLANK(input.addr4) THEN BEGIN
  204.         IF and = 1 THEN APPEND query " AND "
  205.         APPEND query "addr4 like '%" input.addr4 "%'"
  206.         MOVE 1 TO and
  207.         END
  208.     IF NOT BLANK(input.tel) THEN BEGIN
  209.         IF and = 1 THEN APPEND query " AND "
  210.         APPEND query "tel like '%" input.tel "%'"
  211.         MOVE 1 TO and
  212.         END
  213.     IF NOT BLANK(input.fax) THEN BEGIN
  214.         IF and = 1 THEN APPEND query " AND "
  215.         APPEND query "fax like '%" input.fax "%'"
  216.         MOVE 1 TO and
  217.         END
  218.     APPEND query "ORDER BY ref, name;"
  219.     SQL query TO results
  220.     OUTPUT find_list WITH results
  221.  
  222. [PROCESS find_display]
  223.     DATA results
  224.     SQL "SELECT recnum, ref,name,addr1,addr2,addr3,addr4,tel,fax,supplier_type FROM supplier WHERE recnum=$input.recnum ;" TO results
  225.     DISPLAY supplier WITH results
  226.  
  227. [PROCESS pick_display]
  228.     DISPLAY supplier WITH input
  229.  
  230. [OUTPUT find_list]
  231.     SET title AS "Search Results"
  232.     SET type AS screen
  233.     DEFINE OUTPUT {
  234.         recnum : RIGHT : "Record"
  235.         ref : LEFT : "ref"
  236.         name : LEFT : "name"
  237.         } LINK TO PROCESS find_display WITH VALUE recnum
  238.  
  239.  
  240. [MODULE programme]
  241.     SET default_process AS "clear"
  242.  
  243. [FORM programme]
  244.     SET title AS "Programme Codes"
  245.     DEFINE FORM {
  246.         recnum : 10 : "" : HIDDEN
  247.         code : 3 : "Code: " : TEXT
  248.         description : 45 : "Description: " : TEXT
  249.         prog_type : 10 : "Type: " : CHOICE "Conditional" "Unconditional" "Non Capital"
  250.         } IN COLUMN
  251.     DEFINE TOOLBAR {
  252.         "ADD" : ALL : PROCESS "add"
  253.         "FIND" : ALL : PROCESS "find"
  254.         "UPDATE" : DATA : PROCESS "update"
  255.         "DELETE" : DATA : PROCESS "delete"
  256.         "CLEAR" : ALL : PROCESS "clear"
  257.         "EXIT" : ALL : MENU "system"
  258.         }
  259.  
  260. [FORM sure]
  261.     SET title AS "Are you sure you want to delete ?"
  262.     DEFINE FORM {
  263.         recnum : 10 : "" : HIDDEN
  264.         code : 3 : "Code: " : TEXT
  265.         }
  266.     DEFINE TOOLBAR {
  267.         "YES" : ALL : PROCESS "yes"
  268.         "NO" : ALL : PROCESS "clear"
  269.         }
  270.  
  271. [PROCESS add]
  272.     DATA results
  273.     INT no_rows
  274.     INT new_recnum
  275.     SQL "SELECT * FROM programme WHERE code='$input.code';" TO results
  276.     ROWS results TO no_rows
  277.     IF no_rows > 0 THEN BEGIN
  278.         DISPLAY programme WITH input ERROR "Duplicate Record" ON 1
  279.         END
  280.     SQL "SELECT max(recnum) FROM programme;" TO results
  281.     CALC ( results.0.0 + 1 ) TO new_recnum
  282.     SQL "INSERT INTO programme (recnum,code,description,prog_type) VALUES ($new_recnum , '$input.code', '$input.description', $input.prog_type);"
  283.     DISPLAY programme
  284.  
  285. [PROCESS update]
  286.     DATA results
  287.     INT no_rows
  288.     SQL "UPDATE programme SET code='$input.code',description='$input.description',prog_type=$input.prog_type WHERE recnum = $input.recnum ;"
  289.     DISPLAY programme
  290.  
  291. [PROCESS delete]
  292.     DISPLAY sure WITH input
  293.  
  294. [PROCESS clear]
  295.     DISPLAY programme
  296.  
  297. [PROCESS yes]
  298.     SQL "DELETE FROM programme WHERE recnum = $input.recnum ;"
  299.     DISPLAY programme
  300.  
  301. [PROCESS find]
  302.     DATA results
  303.     INT and
  304.     STRING query
  305.     MOVE 0 TO and
  306.     MOVE "SELECT recnum, code, description FROM programme WHERE " TO query
  307.     IF NOT BLANK(input.code) THEN BEGIN
  308.         IF and = 1 THEN APPEND query " AND "
  309.         APPEND query "code like '%" input.code "%'"
  310.         MOVE 1 TO and
  311.         END
  312.     IF NOT BLANK(input.description) THEN BEGIN
  313.         IF and = 1 THEN APPEND query " AND "
  314.         APPEND query "description like '%" input.description "%'"
  315.         MOVE 1 TO and
  316.         END
  317.     APPEND query "ORDER BY code, description;"
  318.     SQL query TO results
  319.     OUTPUT find_list WITH results
  320.  
  321. [PROCESS find_display]
  322.     DATA results
  323.     SQL "SELECT recnum, code,description,prog_type FROM programme WHERE recnum=$input.recnum ;" TO results
  324.     DISPLAY programme WITH results
  325.  
  326. [PROCESS pick_display]
  327.     DISPLAY programme WITH input
  328.  
  329. [OUTPUT find_list]
  330.     SET title AS "Search Results"
  331.     SET type AS screen
  332.     DEFINE OUTPUT {
  333.         recnum : RIGHT : "Record"
  334.         code : LEFT : "code"
  335.         description : LEFT : "description"
  336.         } LINK TO PROCESS find_display WITH VALUE recnum
  337.  
  338.  
  339. [MODULE scheme]
  340.     SET default_process AS "clear"
  341.  
  342. [FORM scheme]
  343.     SET title AS "Scheme Details"
  344.     DEFINE FORM {
  345.         recnum : 10 : "" : HIDDEN
  346.         scheme_id : 6 : "Scheme Number: " : TEXT
  347.         title : 45 : "Title: " : TEXT
  348.         programme_code : 3 : "Programme: " : PICK PROCESS "pick_programme_code"
  349.         costcode : 7 : "Costcode: " : TEXT
  350.         status : 10 : "Status: " : CHOICE "Dormant" "Feasibility" "Design" "Tender" "Construction" "Commissioning" "Completed"
  351.         manager : 6 : "Scheme Manager: " : PICK PROCESS "pick_manager"
  352.         } IN COLUMN
  353.     DEFINE TOOLBAR {
  354.         "ADD" : ALL : PROCESS "add"
  355.         "FIND" : ALL : PROCESS "find"
  356.         "UPDATE" : DATA : PROCESS "update"
  357.         "DELETE" : DATA : PROCESS "delete"
  358.         "CLEAR" : ALL : PROCESS "clear"
  359.         "EXIT" : ALL : MENU "schemes"
  360.         }
  361.  
  362. [FORM sure]
  363.     SET title AS "Are you sure you want to delete ?"
  364.     DEFINE FORM {
  365.         recnum : 10 : "" : HIDDEN
  366.         scheme_id : 6 : "Scheme Number: " : TEXT
  367.         }
  368.     DEFINE TOOLBAR {
  369.         "YES" : ALL : PROCESS "yes"
  370.         "NO" : ALL : PROCESS "clear"
  371.         }
  372.     
  373.  
  374. [PROCESS add]
  375.     DATA results
  376.     INT no_rows
  377.     INT new_recnum
  378.     SQL "SELECT * FROM scheme WHERE  scheme_id='$input.scheme_id';" TO results
  379.     ROWS results TO no_rows
  380.     IF no_rows > 0 THEN BEGIN
  381.         DISPLAY scheme WITH input ERROR "Duplicate Record" ON 1
  382.         END
  383.     SQL "SELECT code from programme WHERE code='$input.programme_code' ;" TO results
  384.     ROWS results TO no_rows
  385.     IF no_rows = 0 THEN BEGIN
  386.         DISPLAY scheme WITH input ERROR "Foreign Key Not Found" ON 3
  387.         END
  388.     SQL "SELECT ref from user WHERE ref='$input.manager' ;" TO results
  389.     ROWS results TO no_rows
  390.     IF no_rows = 0 THEN BEGIN
  391.         DISPLAY scheme WITH input ERROR "Foreign Key Not Found" ON 6
  392.         END
  393.     SQL "SELECT max(recnum) FROM scheme;" TO results
  394.     CALC ( results.0.0 + 1 ) TO new_recnum
  395.     SQL "INSERT INTO scheme (recnum,scheme_id,title,programme_code,costcode,status,manager) VALUES ($new_recnum , '$input.scheme_id', '$input.title', '$input.programme_code', '$input.costcode', $input.status, '$input.manager');"
  396.     DISPLAY scheme
  397.  
  398. [PROCESS update]
  399.     DATA results
  400.     INT no_rows
  401.     SQL "SELECT code from programme WHERE code='$input.programme_code';" TO results
  402.     ROWS results TO no_rows
  403.     IF no_rows = 0 THEN BEGIN
  404.         DISPLAY scheme WITH input ERROR "Foreign Key Not Found" ON 3
  405.         END
  406.     SQL "SELECT ref from user WHERE ref='$input.manager';" TO results
  407.     ROWS results TO no_rows
  408.     IF no_rows = 0 THEN BEGIN
  409.         DISPLAY scheme WITH input ERROR "Foreign Key Not Found" ON 6
  410.         END
  411.     SQL "UPDATE scheme SET scheme_id='$input.scheme_id',title='$input.title',programme_code='$input.programme_code',costcode='$input.costcode',status=$input.status,manager='$input.manager' WHERE recnum = $input.recnum ;"
  412.     DISPLAY scheme
  413.  
  414. [PROCESS delete]
  415.     DISPLAY sure WITH input
  416.  
  417. [PROCESS clear]
  418.     DISPLAY scheme
  419.  
  420. [PROCESS yes]
  421.     SQL "DELETE FROM scheme WHERE recnum = $input.recnum ;"
  422.     DISPLAY scheme
  423.  
  424. [PROCESS find]
  425.     DATA results
  426.     INT and
  427.     STRING query
  428.     MOVE 0 TO and
  429.     MOVE "SELECT recnum, scheme_id, title FROM scheme WHERE " TO query
  430.     IF NOT BLANK(input.scheme_id) THEN BEGIN
  431.         IF and = 1 THEN APPEND query " AND "
  432.         APPEND query "scheme_id like '%" input.scheme_id "%'"
  433.         MOVE 1 TO and
  434.         END
  435.     IF NOT BLANK(input.title) THEN BEGIN
  436.         IF and = 1 THEN APPEND query " AND "
  437.         APPEND query "title like '%" input.title "%'"
  438.         MOVE 1 TO and
  439.         END
  440.     IF NOT BLANK(input.programme_code) THEN BEGIN
  441.         IF and = 1 THEN APPEND query " AND "
  442.         APPEND query "programme_code like '%" input.programme_code "%'"
  443.         MOVE 1 TO and
  444.         END
  445.     IF NOT BLANK(input.costcode) THEN BEGIN
  446.         IF and = 1 THEN APPEND query " AND "
  447.         APPEND query "costcode like '%" input.costcode "%'"
  448.         MOVE 1 TO and
  449.         END
  450.     IF NOT BLANK(input.manager) THEN BEGIN
  451.         IF and = 1 THEN APPEND query " AND "
  452.         APPEND query "manager like '%" input.manager "%'"
  453.         MOVE 1 TO and
  454.         END
  455.     APPEND query "ORDER BY scheme_id, title;"
  456.     SQL query TO results
  457.     OUTPUT find_list WITH results
  458.  
  459. [PROCESS find_display]
  460.     DATA results
  461.     SQL "SELECT recnum, scheme_id,title,programme_code,costcode,status,manager FROM scheme WHERE recnum=$input.recnum ;" TO results
  462.     DISPLAY scheme WITH results
  463.  
  464. [PROCESS pick_display]
  465.     DISPLAY scheme WITH input
  466.  
  467. [PROCESS pick_programme_code]
  468.     DATA results
  469.     SQL "SELECT code, description from programme ; " TO results
  470.     OUTPUT pick_programme_code WITH results
  471.  
  472. [OUTPUT pick_programme_code]
  473.     SET title AS "Available choices:"
  474.     SET type AS screen
  475.     DEFINE  OUTPUT {
  476.         programme_code : LEFT : "Code"
  477.         description : LEFT : "Description"
  478.         } LINK TO PROCESS pick_display WITH VALUE programme_code
  479.  
  480. [PROCESS pick_manager]
  481.     DATA results
  482.     SQL "SELECT ref, name from user WHERE user_type = 1; " TO results
  483.     OUTPUT pick_manager WITH results
  484.  
  485. [OUTPUT pick_manager]
  486.     SET title AS "Available choices:"
  487.     SET type AS screen
  488.     DEFINE  OUTPUT {
  489.         manager : LEFT : "Ref"
  490.         Name : LEFT : "Name"
  491.         } LINK TO PROCESS pick_display WITH VALUE manager
  492.  
  493. [OUTPUT find_list]
  494.     SET title AS "Search Results"
  495.     SET type AS screen
  496.     DEFINE OUTPUT {
  497.         recnum : RIGHT : "Record"
  498.         scheme_id : LEFT : "scheme_id"
  499.         title : LEFT : "title"
  500.         } LINK TO PROCESS find_display WITH VALUE recnum
  501.  
  502.  
  503. [MODULE invoice]
  504.     SET default_process AS "clear"
  505.  
  506. [FORM invoice]
  507.     SET title AS "Invoice Entry"
  508.     DEFINE FORM {
  509.         recnum : 10 : "" : HIDDEN
  510.         obj_code : 7 : "Objective Code: " : PICK PROCESS "pick_obj_code"
  511.         sub_code : 7 : "Subjective Code: " : PICK PROCESS "pick_sub_code"
  512.         supplier : 8 : "Supplier Ref.: " : PICK PROCESS "pick_supplier"
  513.         invoice_number : 20 : "Invoice Number: " : TEXT
  514.         total : 12 : "Invoice Value (Net.): " : TEXT
  515.         invoice_date : 12 : "Invoice Date: " : TEXT
  516.         processed : 12 : "Date Processed: " : TEXT
  517.         vat : 12 : "Non-Reclaimable VAT: " : TEXT
  518.         } IN COLUMN
  519.     DEFINE TOOLBAR {
  520.         "ADD" : ALL : PROCESS "add"
  521.         "FIND" : ALL : PROCESS "find"
  522.         "UPDATE" : DATA : PROCESS "update"
  523.         "DELETE" : DATA : PROCESS "delete"
  524.         "CLEAR" : ALL : PROCESS "clear"
  525.         "EXIT" : ALL : MENU "invoices"
  526.         }
  527.  
  528. [FORM sure]
  529.     SET title AS "Are you sure you want to delete ?"
  530.     DEFINE FORM {
  531.         recnum : 10 : "" : HIDDEN
  532.         obj_code : 7 : "Objective Code: " : TEXT
  533.         sub_code : 7 : "Subjective Code: " : TEXT
  534.         supplier : 8 : "Supplier: " : TEXT
  535.         }
  536.     DEFINE TOOLBAR {
  537.         "YES" : ALL : PROCESS "yes"
  538.         "NO" : ALL : PROCESS "clear"
  539.         }
  540.  
  541. [PROCESS add]
  542.     DATA results
  543.     INT no_rows
  544.     INT new_recnum
  545.     INT spend
  546.     INT amend
  547.     INT limit
  548.     STRING high
  549.     LEFT input.sub_code TO high 4
  550.     SQL "SELECT * FROM invoice WHERE  obj_code='$input.obj_code' AND sub_code='$input.sub_code' AND supplier='$input.supplier' AND invoice_number='$input.invoice_number';" TO results
  551.     ROWS results TO no_rows
  552.     IF no_rows > 0 THEN BEGIN
  553.         DISPLAY invoice WITH input ERROR "Duplicate Record" ON 1
  554.         END
  555.     SQL "SELECT costcode from scheme WHERE costcode='$input.obj_code' ;" TO results
  556.     ROWS results TO no_rows
  557.     IF no_rows = 0 THEN BEGIN
  558.         DISPLAY invoice WITH input ERROR "Foreign Key Not Found" ON 1
  559.         END
  560.     SQL "SELECT costcode from subjective WHERE costcode='$input.sub_code' ;" TO results
  561.     ROWS results TO no_rows
  562.     IF no_rows = 0 THEN BEGIN
  563.         DISPLAY invoice WITH input ERROR "Foreign Key Not Found" ON 2
  564.         END
  565.     SQL "SELECT ref from supplier WHERE ref='$input.supplier' ;" TO results
  566.     ROWS results TO no_rows
  567.     IF no_rows = 0 THEN BEGIN
  568.         DISPLAY invoice WITH input ERROR "Foreign Key Not Found" ON 3
  569.         END
  570.     SQL "SELECT sum(total) FROM invoice WHERE obj_code='$input.obj_code' AND sub_code='$input.sub_code';" TO results
  571.     CALC ( results.0.0 + input.total ) TO spend
  572.     SQL "SELECT max(amend_number) FROM approval, scheme WHERE scheme.costcode='$input.obj_code' AND approval.scheme_id=scheme.scheme_id AND ((sub_code='$input.sub_code') OR (sub_code='$high'));" TO results
  573.     ROWS results TO no_rows
  574.     IF no_rows = 0 THEN BEGIN
  575.         DISPLAY invoice WITH input ERROR "No Approval for Expenditure" ON 2
  576.         END
  577.     CALC ( results.0.0 ) TO amend
  578.     SQL "SELECT limit, sub_code FROM approval, scheme WHERE scheme.costcode='$input.obj_code' AND approval.scheme_id=scheme.scheme_id AND ((sub_code='$input.sub_code') OR (sub_code='$high')) AND amend_number=$amend ORDER BY sub_code;" TO results
  579.     CALC ( results.0.0 - spend ) TO amend
  580.     IF ( amend < 0 ) BEGIN
  581.         DISPLAY invoice WITH input ERROR "Expenditure Exceeds Approval" ON 5
  582.         END    
  583.     SQL "SELECT max(recnum) FROM invoice;" TO results
  584.     CALC ( results.0.0 + 1 ) TO new_recnum
  585.     SQL "INSERT INTO invoice (recnum,obj_code,sub_code,supplier,invoice_number,total,invoice_date,processed,vat) VALUES ($new_recnum , '$input.obj_code', '$input.sub_code', '$input.supplier', '$input.invoice_number', $input.total, '$input.invoice_date', '$input.processed', $input.vat);"
  586.     DISPLAY invoice
  587.  
  588. [PROCESS update]
  589.     DATA results
  590.     INT no_rows
  591.     SQL "SELECT costcode from scheme WHERE costcode='$input.obj_code' ;" TO results
  592.     ROWS results TO no_rows
  593.     IF no_rows = 0 THEN BEGIN
  594.         DISPLAY invoice WITH input ERROR "Foreign Key Not Found" ON 1
  595.         END
  596.     SQL "SELECT costcode from subjective WHERE costcode=$input.sub_code ;" TO results
  597.     ROWS results TO no_rows
  598.     IF no_rows = 0 THEN BEGIN
  599.         DISPLAY invoice WITH input ERROR "Foreign Key Not Found" ON 2
  600.         END
  601.     SQL "SELECT ref from supplier WHERE ref='$input.supplier' ;" TO results
  602.     ROWS results TO no_rows
  603.     IF no_rows = 0 THEN BEGIN
  604.         DISPLAY invoice WITH input ERROR "Foreign Key Not Found" ON 3
  605.         END
  606.     SQL "UPDATE invoice SET obj_code='$input.obj_code',sub_code='$input.sub_code',supplier='$input.supplier',invoice_number='$input.invoice_number',total=$input.total,invoice_date='$input.invoice_date',processed='$input.processed',vat=$input.vat WHERE recnum = $input.recnum ;"
  607.     DISPLAY invoice
  608.  
  609. [PROCESS delete]
  610.     DISPLAY sure WITH input
  611.  
  612. [PROCESS clear]
  613.     DISPLAY invoice
  614.  
  615. [PROCESS yes]
  616.     SQL "DELETE FROM invoice WHERE recnum = $input.recnum ;"
  617.     DISPLAY invoice
  618.  
  619. [PROCESS find]
  620.     DATA results
  621.     INT and
  622.     STRING query
  623.     MOVE 0 TO and
  624.     MOVE "SELECT recnum, supplier, invoice_number, obj_code, sub_code, total FROM invoice WHERE " TO query
  625.     IF NOT BLANK(input.obj_code) THEN BEGIN
  626.         IF and = 1 THEN APPEND query " AND "
  627.         APPEND query "obj_code like '%" input.obj_code "%'"
  628.         MOVE 1 TO and
  629.         END
  630.     IF NOT BLANK(input.sub_code) THEN BEGIN
  631.         IF and = 1 THEN APPEND query " AND "
  632.         APPEND query "sub_code like '%" input.sub_code "%'"
  633.         MOVE 1 TO and
  634.         END
  635.     IF NOT BLANK(input.supplier) THEN BEGIN
  636.         IF and = 1 THEN APPEND query " AND "
  637.         APPEND query "supplier like '%" input.supplier "%'"
  638.         MOVE 1 TO and
  639.         END
  640.     IF NOT BLANK(input.invoice_number) THEN BEGIN
  641.         IF and = 1 THEN APPEND query " AND "
  642.         APPEND query "invoice_number like '%" input.invoice_number "%'"
  643.         MOVE 1 TO and
  644.         END
  645.     APPEND query "ORDER BY supplier, invoice_number, obj_code, sub_code, total;"
  646.     SQL query TO results
  647.     OUTPUT find_list WITH results
  648.  
  649. [PROCESS find_display]
  650.     DATA results
  651.     SQL "SELECT recnum, obj_code,sub_code,supplier,invoice_number,total,invoice_date,processed,vat FROM invoice WHERE recnum=$input.recnum ;" TO results
  652.     DISPLAY invoice WITH results
  653.  
  654. [PROCESS pick_display]
  655.     DISPLAY invoice WITH input
  656.  
  657. [PROCESS pick_obj_code]
  658.     DATA results
  659.     SQL "SELECT costcode, title, scheme_id from scheme ; " TO results
  660.     OUTPUT pick_obj_code WITH results
  661.  
  662. [OUTPUT pick_obj_code]
  663.     SET title AS "Available choices:"
  664.     SET type AS screen
  665.     DEFINE  OUTPUT {
  666.         obj_code : LEFT : "Costcode"
  667.         title : LEFT : "Title"
  668.         scheme_id : LEFT : "Scheme Number"
  669.         } LINK TO PROCESS pick_display WITH VALUE obj_code
  670.  
  671. [PROCESS pick_sub_code]
  672.     DATA results
  673.     SQL "SELECT costcode, description from subjective ; " TO results
  674.     OUTPUT pick_sub_code WITH results
  675.  
  676. [OUTPUT pick_sub_code]
  677.     SET title AS "Available choices:"
  678.     SET type AS screen
  679.     DEFINE  OUTPUT {
  680.         sub_code : LEFT : "Costcode"
  681.         description : LEFT : "Description"
  682.         } LINK TO PROCESS pick_display WITH VALUE sub_code
  683.  
  684. [PROCESS pick_supplier]
  685.     DATA results
  686.     SQL "SELECT ref, name from supplier ORDER BY name; " TO results
  687.     OUTPUT pick_supplier WITH results
  688.  
  689. [OUTPUT pick_supplier]
  690.     SET title AS "Available choices:"
  691.     SET type AS screen
  692.     DEFINE  OUTPUT {
  693.         supplier : LEFT : "Reference"
  694.         name : LEFT : "Name"
  695.         } LINK TO PROCESS pick_display WITH VALUE supplier
  696.  
  697. [OUTPUT find_list]
  698.     SET title AS "Search Results"
  699.     SET type AS screen
  700.     DEFINE OUTPUT {
  701.         recnum : RIGHT : "Record"
  702.         supplier : LEFT : "supplier"
  703.         invoice_number : LEFT : "invoice_number"
  704.         obj_code : LEFT : "obj_code"
  705.         sub_code : LEFT : "sub_code"
  706.         total : LEFT : "total"
  707.         } LINK TO PROCESS find_display WITH VALUE recnum
  708.  
  709.  
  710. [MODULE cashflow]
  711.     SET default_process AS "clear"
  712.  
  713. [FORM cashflow]
  714.     SET title AS "Cashflow"
  715.     DEFINE FORM {
  716.         recnum : 10 : "" : HIDDEN
  717.         scheme_id : 6 : "Scheme Number: " : PICK PROCESS "pick_scheme_id"
  718.         year : 10 : "Financial Year: " : TEXT
  719.         } IN COLUMN
  720.     DEFINE FORM {
  721.         month : 10 : "Month" : SEQUENCE FROM 1 DISPLAY AS "April" "May" "June" "July" "August" "September" "October" "November" "December" "January" "February" "March"
  722.         amount : 12 : "Amount" : TEXT
  723.         } IN TABLE OF 12 ROWS
  724.     DEFINE TOOLBAR {
  725.         "ADD" : ALL : PROCESS "add"
  726.         "FIND" : ALL : PROCESS "find"
  727.         "UPDATE" : DATA : PROCESS "update"
  728.         "DELETE" : DATA : PROCESS "delete"
  729.         "CLEAR" : ALL : PROCESS "clear"
  730.         "EXIT" : ALL : MENU "schemes"
  731.         }
  732.  
  733. [FORM sure]
  734.     SET title AS "Are you sure you want to delete ?"
  735.     DEFINE FORM {
  736.         recnum : 10 : "" : HIDDEN
  737.         scheme_id : 6 : "Scheme Number: " : TEXT
  738.         year : 10 : "Year: " : TEXT
  739.         }
  740.     DEFINE TOOLBAR {
  741.         "YES" : ALL : PROCESS "yes"
  742.         "NO" : ALL : PROCESS "clear"
  743.         }
  744.  
  745. [PROCESS add]
  746.     DATA results
  747.     INT no_rows
  748.     INT a
  749.     INT new_recnum
  750.     SQL "SELECT * FROM cashflow WHERE  scheme_id='$input.scheme_id' AND year=$input.year;" TO results
  751.     ROWS results TO no_rows
  752.     IF no_rows > 0 THEN BEGIN
  753.         DISPLAY cashflow WITH input ERROR "Duplicate Record" ON 1
  754.         END
  755.     SQL "SELECT scheme_id from scheme WHERE scheme_id='$input.scheme_id';" TO results
  756.     ROWS results TO no_rows
  757.     IF no_rows = 0 THEN BEGIN
  758.         DISPLAY cashflow WITH input ERROR "Foreign Key Not Found" ON 1
  759.         END
  760.     SQL "SELECT max(recnum) FROM cashflow;" TO results
  761.     CALC ( results.0.0 + 1 ) TO new_recnum
  762.     FOR a FROM 0 TO 11 BEGIN    
  763.         SQL "INSERT INTO cashflow (recnum,scheme_id,month,year,amount) VALUES ($new_recnum , '$input.scheme_id', $input.month.a, $input.year, $input.amount.a);"
  764.         END
  765.     DISPLAY cashflow
  766.  
  767. [PROCESS update]
  768.     DATA results
  769.     INT no_rows
  770.     INT a
  771.     SQL "SELECT scheme_id from scheme WHERE scheme_id='$input.scheme_id' ;" TO results
  772.     ROWS results TO no_rows
  773.     IF no_rows = 0 THEN BEGIN
  774.         DISPLAY cashflow WITH input ERROR "Foreign Key Not Found" ON 1
  775.         END
  776.     FOR a FROM 0 TO 11 BEGIN
  777.         SQL "UPDATE cashflow SET scheme_id='$input.scheme_id',month=$input.month.a,year=$input.year,amount=$input.amount.a WHERE recnum = $input.recnum AND month = $input.month.a;"
  778.         END
  779.     DISPLAY cashflow
  780.  
  781. [PROCESS delete]
  782.     DISPLAY sure WITH input
  783.  
  784. [PROCESS clear]
  785.     DISPLAY cashflow
  786.  
  787. [PROCESS yes]
  788.     SQL "DELETE FROM cashflow WHERE recnum = $input.recnum ;"
  789.     DISPLAY cashflow
  790.  
  791. [PROCESS find]
  792.     DATA results
  793.     INT and
  794.     STRING query
  795.     MOVE 0 TO and
  796.     MOVE "SELECT distinct recnum, scheme_id, year FROM cashflow WHERE " TO query
  797.     IF NOT BLANK(input.scheme_id) THEN BEGIN
  798.         IF and = 1 THEN APPEND query " AND "
  799.         APPEND query "scheme_id like '%" input.scheme_id "%'"
  800.         MOVE 1 TO and
  801.         END
  802.     APPEND query "ORDER BY scheme_id, year;"
  803.     SQL query TO results
  804.     OUTPUT find_list WITH results
  805.  
  806. [PROCESS find_display]
  807.     DATA results
  808.     SQL "SELECT recnum, scheme_id, year, month, amount FROM cashflow WHERE recnum=$input.recnum ORDER BY month;" TO results
  809.     DISPLAY cashflow WITH results
  810.  
  811. [PROCESS pick_display]
  812.     DISPLAY cashflow WITH input
  813.  
  814. [PROCESS pick_scheme_id]
  815.     DATA results
  816.     SQL "SELECT scheme_id, title from scheme ; " TO results
  817.     OUTPUT pick_scheme_id WITH results
  818.  
  819. [OUTPUT pick_scheme_id]
  820.     SET title AS "Available choices:"
  821.     SET type AS screen
  822.     DEFINE  OUTPUT {
  823.         scheme_id : LEFT : "Scheme"
  824.         title : LEFT : "Title
  825.         } LINK TO PROCESS pick_display WITH VALUE scheme_id
  826.  
  827. [OUTPUT find_list]
  828.     SET title AS "Search Results"
  829.     SET type AS screen
  830.     DEFINE OUTPUT {
  831.         recnum : RIGHT : "Record"
  832.         scheme_id : LEFT : "scheme_id"
  833.         year : LEFT : "year"
  834.         } LINK TO PROCESS find_display WITH VALUE recnum
  835.  
  836.  
  837. [MODULE approval]
  838.     SET default_process AS "clear"
  839.  
  840. [FORM approval]
  841.     SET title AS "Approval Entry"
  842.     DEFINE FORM {
  843.         recnum : 10 : "" : HIDDEN
  844.         scheme_id : 6 : "Scheme Number: " : PICK PROCESS "pick_scheme_id"
  845.         amend_number : 10 : "Amendment Number: " : TEXT
  846.         sub_code : 7 : "Subjective Costcode: " : PICK PROCESS "pick_sub_code"
  847.         limit : 12 : "Expenditure Limit: " : TEXT
  848.         } IN COLUMN
  849.     DEFINE TOOLBAR {
  850.         "ADD" : ALL : PROCESS "add"
  851.         "FIND" : ALL : PROCESS "find"
  852.         "UPDATE" : DATA : PROCESS "update"
  853.         "DELETE" : DATA : PROCESS "delete"
  854.         "CLEAR" : ALL : PROCESS "clear"
  855.         "EXIT" : ALL : MENU "schemes"
  856.         }
  857.  
  858. [FORM sure]
  859.     SET title AS "Are you sure you want to delete ?"
  860.     DEFINE FORM {
  861.         recnum : 10 : "" : HIDDEN
  862.         scheme_id : 6 : "Scheme Number: " : TEXT
  863.         amend_number : 10 : "Amendment Number: " : TEXT
  864.         sub_code : 7 : "Subjective Code: " : TEXT
  865.         }
  866.     DEFINE TOOLBAR {
  867.         "YES" : ALL : PROCESS "yes"
  868.         "NO" : ALL : PROCESS "clear"
  869.         }
  870.  
  871. [PROCESS add]
  872.     DATA results
  873.     INT no_rows
  874.     INT new_recnum
  875.     SQL "SELECT * FROM approval WHERE  scheme_id='$input.scheme_id' AND amend_number=$input.amend_number AND sub_code='$input.sub_code';" TO results
  876.     ROWS results TO no_rows
  877.     IF no_rows > 0 THEN BEGIN
  878.         DISPLAY approval WITH input ERROR "Duplicate Record" ON 1
  879.         END
  880.     SQL "SELECT scheme_id from scheme WHERE scheme_id='$input.scheme_id' ;" TO results
  881.     ROWS results TO no_rows
  882.     IF no_rows = 0 THEN BEGIN
  883.         DISPLAY approval WITH input ERROR "Foreign Key Not Found" ON 1
  884.         END
  885.     SQL "SELECT costcode from subjective WHERE costcode='$input.sub_code' ;" TO results
  886.     ROWS results TO no_rows
  887.     IF no_rows = 0 THEN BEGIN
  888.         DISPLAY approval WITH input ERROR "Foreign Key Not Found" ON 3
  889.         END
  890.     SQL "SELECT max(recnum) FROM approval;" TO results
  891.     CALC ( results.0.0 + 1 ) TO new_recnum
  892.     SQL "INSERT INTO approval (recnum,scheme_id,amend_number,sub_code,limit) VALUES ($new_recnum , '$input.scheme_id', $input.amend_number, '$input.sub_code', $input.limit);"
  893.     DISPLAY approval
  894.  
  895. [PROCESS update]
  896.     DATA results
  897.     INT no_rows
  898.     SQL "SELECT scheme_id from scheme WHERE scheme_id='$input.scheme_id' ;" TO results
  899.     ROWS results TO no_rows
  900.     IF no_rows = 0 THEN BEGIN
  901.         DISPLAY approval WITH input ERROR "Foreign Key Not Found" ON 1
  902.         END
  903.     SQL "SELECT costcode from subjective WHERE costcode='$input.sub_code' ;" TO results
  904.     ROWS results TO no_rows
  905.     IF no_rows = 0 THEN BEGIN
  906.         DISPLAY approval WITH input ERROR "Foreign Key Not Found" ON 3
  907.         END
  908.     SQL "UPDATE approval SET scheme_id='$input.scheme_id',amend_number=$input.amend_number,sub_code='$input.sub_code',limit=$input.limit WHERE recnum = $input.recnum ;"
  909.     DISPLAY approval
  910.  
  911. [PROCESS delete]
  912.     DISPLAY sure WITH input
  913.  
  914. [PROCESS clear]
  915.     DISPLAY approval
  916.  
  917. [PROCESS yes]
  918.     SQL "DELETE FROM approval WHERE recnum = $input.recnum ;"
  919.     DISPLAY approval
  920.  
  921. [PROCESS find]
  922.     DATA results
  923.     INT and
  924.     STRING query
  925.     MOVE 1 TO and
  926.     MOVE "SELECT recnum, scheme_id, amend_number, sub_code, description FROM approval, subjective WHERE subjective.costcode=approval.sub_code " TO query
  927.     IF NOT BLANK(input.scheme_id) THEN BEGIN
  928.         IF and = 1 THEN APPEND query " AND "
  929.         APPEND query "scheme_id like '%" input.scheme_id "%'"
  930.         MOVE 1 TO and
  931.         END
  932.     IF NOT BLANK(input.sub_code) THEN BEGIN
  933.         IF and = 1 THEN APPEND query " AND "
  934.         APPEND query "sub_code like '%" input.sub_code "%'"
  935.         MOVE 1 TO and
  936.         END
  937.     APPEND query "ORDER BY scheme_id, amend_number;"
  938.     SQL query TO results
  939.     OUTPUT find_list WITH results
  940.  
  941. [PROCESS find_display]
  942.     DATA results
  943.     SQL "SELECT recnum, scheme_id,amend_number,sub_code, limit FROM approval WHERE recnum=$input.recnum ;" TO results
  944.     DISPLAY approval WITH results
  945.  
  946. [PROCESS pick_display]
  947.     DISPLAY approval WITH input
  948.  
  949. [PROCESS pick_scheme_id]
  950.     DATA results
  951.     SQL "SELECT scheme_id, title from scheme ; " TO results
  952.     OUTPUT pick_scheme_id WITH results
  953.  
  954. [OUTPUT pick_scheme_id]
  955.     SET title AS "Available choices:"
  956.     SET type AS screen
  957.     DEFINE  OUTPUT {
  958.         scheme_id : LEFT : "Scheme"
  959.         title : LEFT : "Title"
  960.         } LINK TO PROCESS pick_display WITH VALUE scheme_id
  961.  
  962. [PROCESS pick_sub_code]
  963.     DATA results
  964.     SQL "SELECT costcode, description from subjective ; " TO results
  965.     OUTPUT pick_sub_code WITH results
  966.  
  967. [OUTPUT pick_sub_code]
  968.     SET title AS "Available choices:"
  969.     SET type AS screen
  970.     DEFINE  OUTPUT {
  971.         sub_code : LEFT : "sub_code"
  972.         description : LEFT : "Description"
  973.         } LINK TO PROCESS pick_display WITH VALUE sub_code
  974.  
  975. [OUTPUT find_list]
  976.     SET title AS "Search Results"
  977.     SET type AS screen
  978.     DEFINE OUTPUT {
  979.         recnum : RIGHT : "Record"
  980.         scheme_id : LEFT : "Scheme"
  981.         amend_number : LEFT : "Amendment"
  982.         sub_code : LEFT : "Subjective"
  983.         description : LEFT : "Description"
  984.         } LINK TO PROCESS find_display WITH VALUE recnum
  985.  
  986.  
  987. [MODULE user]
  988.     SET default_process AS "clear"
  989.  
  990. [FORM user]
  991.     SET title AS "User Maintenance"
  992.     DEFINE FORM {
  993.         recnum : 10 : "" : HIDDEN
  994.         ref : 6 : "User Reference: " : TEXT
  995.         name : 45 : "Full Name: " : TEXT
  996.         password : 8 : "Password: " : TEXT
  997.         user_type : 10 : "Type: " : CHOICE "Invoice Logger" "Scheme Manager" "System Manager"
  998.         } IN COLUMN
  999.     DEFINE TOOLBAR {
  1000.         "ADD" : ALL : PROCESS "add"
  1001.         "FIND" : ALL : PROCESS "find"
  1002.         "UPDATE" : DATA : PROCESS "update"
  1003.         "DELETE" : DATA : PROCESS "delete"
  1004.         "CLEAR" : ALL : PROCESS "clear"
  1005.         "EXIT" : ALL : MENU "system"
  1006.         }
  1007.  
  1008. [FORM sure]
  1009.     SET title AS "Are you sure you want to delete ?"
  1010.     DEFINE FORM {
  1011.         recnum : 10 : "" : HIDDEN
  1012.         ref : 6 : "User Reference: " : TEXT
  1013.         }
  1014.     DEFINE TOOLBAR {
  1015.         "YES" : ALL : PROCESS "yes"
  1016.         "NO" : ALL : PROCESS "clear"
  1017.         }
  1018.  
  1019. [PROCESS add]
  1020.     DATA results
  1021.     INT no_rows
  1022.     INT new_recnum
  1023.     SQL "SELECT * FROM user WHERE  ref='$input.ref';" TO results
  1024.     ROWS results TO no_rows
  1025.     IF no_rows > 0 THEN BEGIN
  1026.         DISPLAY user WITH input ERROR "Duplicate Record" ON 1
  1027.         END
  1028.     SQL "SELECT max(recnum) FROM user;" TO results
  1029.     CALC ( results.0.0 + 1 ) TO new_recnum
  1030.     SQL "INSERT INTO user (recnum,ref,name,password,user_type) VALUES ($new_recnum , '$input.ref', '$input.name', '$input.password', $input.user_type);"
  1031.     DISPLAY user
  1032.  
  1033. [PROCESS update]
  1034.     DATA results
  1035.     INT no_rows
  1036.     SQL "UPDATE user SET ref='$input.ref',name='$input.name',password='$input.password',user_type=$input.user_type WHERE recnum = $input.recnum ;"
  1037.     DISPLAY user
  1038.  
  1039. [PROCESS delete]
  1040.     DISPLAY sure WITH input
  1041.  
  1042. [PROCESS clear]
  1043.     DISPLAY user
  1044.  
  1045. [PROCESS yes]
  1046.     SQL "DELETE FROM user WHERE recnum = $input.recnum ;"
  1047.     DISPLAY user
  1048.  
  1049. [PROCESS find]
  1050.     DATA results
  1051.     INT and
  1052.     STRING query
  1053.     MOVE 0 TO and
  1054.     MOVE "SELECT recnum, ref, name FROM user WHERE " TO query
  1055.     IF NOT BLANK(input.ref) THEN BEGIN
  1056.         IF and = 1 THEN APPEND query " AND "
  1057.         APPEND query "ref like '%" input.ref "%'"
  1058.         MOVE 1 TO and
  1059.         END
  1060.     IF NOT BLANK(input.name) THEN BEGIN
  1061.         IF and = 1 THEN APPEND query " AND "
  1062.         APPEND query "name like '%" input.name "%'"
  1063.         MOVE 1 TO and
  1064.         END
  1065.     IF NOT BLANK(input.password) THEN BEGIN
  1066.         IF and = 1 THEN APPEND query " AND "
  1067.         APPEND query "password like '%" input.password "%'"
  1068.         MOVE 1 TO and
  1069.         END
  1070.     APPEND query "ORDER BY ref, name;"
  1071.     SQL query TO results
  1072.     OUTPUT find_list WITH results
  1073.  
  1074. [PROCESS find_display]
  1075.     DATA results
  1076.     SQL "SELECT recnum, ref,name,password,user_type FROM user WHERE recnum=$input.recnum ;" TO results
  1077.     DISPLAY user WITH results
  1078.  
  1079. [PROCESS pick_display]
  1080.     DISPLAY user WITH input
  1081.  
  1082. [OUTPUT find_list]
  1083.     SET title AS "Search Results"
  1084.     SET type AS screen
  1085.     DEFINE OUTPUT {
  1086.         recnum : RIGHT : "Record"
  1087.         ref : LEFT : "ref"
  1088.         name : LEFT : "name"
  1089.         } LINK TO PROCESS find_display WITH VALUE recnum
  1090.  
  1091.  
  1092.  
  1093. []
  1094.